#ifndef DSPSIMULATOR_KEYWORDTABLE_H
#define DSPSIMULATOR_KEYWORDTABLE_H

#include <string>
#include <unordered_map>
#include <simulatorV1/lexer/tag.h>

/**
 * Keywords类用于维护一个关键字表，并用于查找一个字符串是否为关键字
 */
class Keywords {
private:
    using KeywordTable = std::unordered_map<std::string, Tag>;
    KeywordTable m_keywordTable;    // 关键字表
public:
    Keywords();

    /**
     * @param name 标识符字符串
     * @return 如果name为一个关键字，返回关键字Tag，否则返回Tag::ID
     */
    Tag getTag(std::string name);
};

#endif //DSPSIMULATOR_KEYWORDTABLE_H
